﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WpfApplication1
{
    class GestorIngresos
    {
        public readonly int nroMaxDiasMes = 31;
        Ingreso i;
        DateTime fechaActual;

        public GestorIngresos()
        {
            fechaActual = DateTime.Today;
        }

        public void registrarIngreso(String descIngreso, int tipoIngreso, Double montoIngreso, DateTime fechaIni, DateTime fechaFin, int periodicidad, int fechaBasePago)
        {
            if (montoIngreso > 0)
            {
                if (descIngreso.Equals("") || descIngreso.Equals(null))
                {
                    descIngreso = "Ingreso" + "numeracion de BD";
                }
                if (fechaIni.CompareTo(fechaFin) < 0)
                {
                    //Fecha Base Pago consistente con la fecha
                    i.validarYAsignarFechaBasePagoIngreso(fechaBasePago, fechaActual);
                    i = new Ingreso(descIngreso, tipoIngreso, montoIngreso, fechaIni, fechaFin, periodicidad, fechaBasePago);

                }
                else
                {
                    throw new ArgumentOutOfRangeException("montoIngreso", "La fecha inicio no puede ser posterior a la fecha final");
                }
            }
            else
            {
                throw new ArgumentOutOfRangeException("montoIngreso", "El monto del ingreso no puede ser negativo");
            }
        }

        public void editarDescripcionIngreso(String nuevaDescripcion)
        {
            i.descripcionIngreso = nuevaDescripcion;
        }

        public void editarTipoIngreso(int tipoIngreso)
        {
            i.tipoIngreso = tipoIngreso;
        }

        public void editarMontoIngreso(Double montoIngreso)
        {
            i.montoIngreso = montoIngreso;
        }

        public void editarFechaInicioIngreso(DateTime fechaIni)
        {
            i.fechaInicioIngreso = fechaIni;
        }

        public void editarFechaFinIngreso(DateTime fechaFin)
        {
            i.fechaFinIngreso = fechaFin;
        }

        public void editarPeriodicidadIngreso(int periodicidad)
        {
            i.periodicidadIngreso = periodicidad;
        }

        public void editarFechaBasePagoIngreso(int fechaBasePago)
        {
            i.fechaBasePagoIngreso = fechaBasePago;
        }

        public void eliminarIngreso(int idIngreso)
        {
            //eliminar de la base de datos
            Console.WriteLine("Ingreso eliminado con éxito");
        }
    }
}